package com.syyai.spring.boot.starter.demo;

import org.springframework.boot.context.properties.ConfigurationProperties;

/**
 * 
 * @author zhangyongjie
 *
 */
@ConfigurationProperties(prefix = "hibernate")
public class HibernateProperties{
	
	/**一个Hibernate Dialect类名允许Hibernate针对特定的关系数据库生成优化的SQL.
	取值 full.classname.of.Dialect
	 * */
	private String dialect;
	
	/**输出所有SQL语句到控制台. 有一个另外的选择是把org.private String SQL这个log category设为debug。
	eg. true | false*/
	private Boolean showSql;
	
	/**在log和console中打印出更漂亮的SQL。
	取值 true | false*/
	private Boolean formatSql	;
	
	/**在生成的SQL中, 将给定的schema/tablespace附加于非全限定名的表名上.
	取值 SCHEMA_NAME*/
	private String defaultSchema;	
	
	/***在生成的SQL中, 将给定的catalog附加于非全限定名的表名上.
	取值 CATALOG_NAME*/
	private String defaultCatalog;

	/**SessionFactory创建后，将自动使用这个名字绑定到JNDI中.
	取值 jndi/composite/name*/
	private String sessionFactoryName;
	
	/**	为单向关联(一对一, 多对一)的外连接抓取（outer join fetch）树设置最大深度. 值为0意味着将关闭默认的外连接抓取.
	取值 建议在0到3之间取值*/
	private Integer maxFetchDepth;

	/**为Hibernate关联的批量抓取设置默认数量.
	取值 建议的取值为4, 8, 和16*/
	private Integer defaultBatchFetchSize	;
	
	/**为由这个SessionFactory打开的所有Session指定默认的实体表现模式.
	取值 dynamic-map, dom4j, pojo*/
	private String defaultEntityMode;	

	/**强制Hibernate按照被更新数据的主键，为SQL更新排序。这么做将减少在高并发系统中事务的死锁。
	取值 true | false*/
	private Boolean orderUpdates	;

	/**如果开启, Hibernate将收集有助于性能调节的统计数据.
	取值 true | false*/
	private Boolean generateStatistics;

	/**	如果开启, 在对象被删除时生成的标识属性将被重设为默认值.
	取值 true | false*/
	private Boolean useIdentiferRollback;

	/**如果开启, Hibernate将在SQL中生成有助于调试的注释信息, 默认值为false.
	取值 true | false*/
	private Boolean useSqlComments;

	public String getDialect() {
		return dialect;
	}

	public void setDialect(String dialect) {
		this.dialect = dialect;
	}

	public Boolean getShowSql() {
		return showSql;
	}

	public void setShowSql(Boolean showSql) {
		this.showSql = showSql;
	}

	public Boolean getFormatSql() {
		return formatSql;
	}

	public void setFormatSql(Boolean formatSql) {
		this.formatSql = formatSql;
	}

	public String getDefaultSchema() {
		return defaultSchema;
	}

	public void setDefaultSchema(String defaultSchema) {
		this.defaultSchema = defaultSchema;
	}

	public String getDefaultCatalog() {
		return defaultCatalog;
	}

	public void setDefaultCatalog(String defaultCatalog) {
		this.defaultCatalog = defaultCatalog;
	}

	public String getSessionFactoryName() {
		return sessionFactoryName;
	}

	public void setSessionFactoryName(String sessionFactoryName) {
		this.sessionFactoryName = sessionFactoryName;
	}

	public Integer getMaxFetchDepth() {
		return maxFetchDepth;
	}

	public void setMaxFetchDepth(Integer maxFetchDepth) {
		this.maxFetchDepth = maxFetchDepth;
	}

	public Integer getDefaultBatchFetchSize() {
		return defaultBatchFetchSize;
	}

	public void setDefaultBatchFetchSize(Integer defaultBatchFetchSize) {
		this.defaultBatchFetchSize = defaultBatchFetchSize;
	}

	public String getDefaultEntityMode() {
		return defaultEntityMode;
	}

	public void setDefaultEntityMode(String defaultEntityMode) {
		this.defaultEntityMode = defaultEntityMode;
	}

	public Boolean getOrderUpdates() {
		return orderUpdates;
	}

	public void setOrderUpdates(Boolean orderUpdates) {
		this.orderUpdates = orderUpdates;
	}

	public Boolean getGenerateStatistics() {
		return generateStatistics;
	}

	public void setGenerateStatistics(Boolean generateStatistics) {
		this.generateStatistics = generateStatistics;
	}

	public Boolean getUseIdentiferRollback() {
		return useIdentiferRollback;
	}

	public void setUseIdentiferRollback(Boolean useIdentiferRollback) {
		this.useIdentiferRollback = useIdentiferRollback;
	}

	public Boolean getUseSqlComments() {
		return useSqlComments;
	}

	public void setUseSqlComments(Boolean useSqlComments) {
		this.useSqlComments = useSqlComments;
	}
	
	
	
}